package com.atguigu.tingshu.album.mapper;

import com.atguigu.tingshu.model.album.AlbumInfo;
import com.atguigu.tingshu.model.album.BaseAttribute;
import com.atguigu.tingshu.query.album.AlbumInfoQuery;
import com.atguigu.tingshu.vo.album.AlbumListVo;
import com.atguigu.tingshu.vo.album.AlbumStatVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AlbumInfoMapper extends BaseMapper<AlbumInfo> {

    /**
     * 根据一级分类Id获取分类属性以及属性值（标签名，标签值）列表
     *
     * @param category1Id 一级分类ID
     * @return
     */
    List<BaseAttribute> getAttributeListByCategory1Id(@Param("category1Id") Long category1Id);

    /**
     * 查询当前创作者专辑分页列表
     *
     * @param pageInfo MP分页对象,框架发现参数中分页对象Page 自动进行分页，SQL最后增加 limit ?,?
     * @param query    查询条件（用户ID，关键字、状态）
     * @return
     */
    Page<AlbumListVo> getUserAlbumPage(Page<AlbumListVo> pageInfo, @Param("vo") AlbumInfoQuery query);

    /**
     * 根据专辑ID查询专辑统计信息
     *
     * @param albumId 专辑ID
     * @return
     */
    AlbumStatVo getAlbumStatVo(@Param("albumId") Long albumId);

    void updateStat(@Param("albumId") Long albumId, @Param("statType") String statType, @Param("count") Integer count);
}
